const jwt = require('jsonwebtoken');

/**
 * JWT认证中间件
 * @param {Object} req 请求对象
 * @param {Object} res 响应对象
 * @param {Function} next 下一步函数
 */
const authenticateToken = (req, res, next) => {
  // 从请求头获取token
  const authHeader = req.headers['authorization'];
  const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN

  // 检查是否存在token
  if (!token) {
    return res.status(401).json({
      code: 401,
      message: '访问令牌缺失'
    });
  }

  // 验证token
  jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
    if (err) {
      return res.status(403).json({
        code: 403,
        message: '访问令牌无效'
      });
    }
    
    // 将用户信息添加到请求对象中
    req.user = user;
    next();
  });
};

module.exports = { authenticateToken };